package com.tancire.question.mapper;

import java.util.List;

import com.tancire.question.domain.TrainExam;
import com.tancire.question.domain.TrainProblem;
import org.apache.ibatis.annotations.Param;

/**
 * 答题题目Mapper接口
 *
 * @author tancire
 * @date 2024-10-09
 */
public interface TrainProblemMapper {
    /**
     * 查询答题题目
     *
     * @param id 答题题目主键
     * @return 答题题目
     */
    TrainProblem selectTrainProblemById(Long id);

    /**
     * 查询答题题目列表
     *
     * @param trainProblem 答题题目
     * @return 答题题目集合
     */
    List<TrainProblem> selectTrainProblemList(TrainProblem trainProblem);

    /**
     * 新增答题题目
     *
     * @param trainProblem 答题题目
     * @return 结果
     */
    int insertTrainProblem(TrainProblem trainProblem);

    /**
     * 修改答题题目
     *
     * @param trainProblem 答题题目
     * @return 结果
     */
    int updateTrainProblem(TrainProblem trainProblem);

    /**
     * 删除答题题目
     *
     * @param id 答题题目主键
     * @return 结果
     */
    int deleteTrainProblemById(Long id);

    /**
     * 批量删除答题题目
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteTrainProblemByIds(Long[] ids);

    /**
     * 查询下一个题
     *
     * @param typeId
     * @param start
     * @param end
     * @return
     */
    TrainProblem selectNextProblem(@Param("typeId") Long typeId, @Param("start") int start, @Param("end") int end);

    /**
     * 查询数量
     *
     * @param trainProblem
     * @return
     */
    Integer selectProblemCount(TrainProblem trainProblem);

    /**
     * 查询IDS
     *
     * @param trainExam
     * @return
     */
    List<Long> selectProblemIds(TrainExam trainExam);

    /**
     * 根据id查询题目
     *
     * @param ids
     * @return
     */
    List<TrainProblem> selectListByIds(@Param("ids") List<Long> ids);

    /**
     * 查询排除活动项目的数据
     *
     * @param trainProblem
     * @return
     */
    List<TrainProblem> selectTrainProblemListExtr(TrainProblem trainProblem);
}
